/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
//Funciones Yoon
function validate(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]/;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    theEvent.preventDefault();
  }
}

//Funcion Yoon

//Devuelve true cuando es valido o falso en caso contrario
function validarRUT(numero){
    var rutcompleto = String(numero);
    var arregloRUT = rutcompleto.split("-", 2);
    strnum=new String(arregloRUT[0]);
    var dv = arregloRUT[1];
    var resto,suma,digito,factor;
    suma=0;
    factor=2;
    for (h=strnum.length - 1;h>=0 ;h--){
        suma=suma + (parseInt(strnum.charAt(h)) * factor);
        factor++;
        if (factor == 8) factor=2;
    }
    resto=(suma % 11);
    digito = 11 - resto;
    if (digito == 10)
        if (dv=="K" || dv=="k")
            return true
        else
            return false
    else
        if (digito==11)
            if (dv=="0")
                return true
            else
                return false
        else
            if (digito == dv)
                return true
            else
                return false;
    return true;
}

function validarCotizacion(){
    cont=0;
    for(i=1; i<50; i++){
        var tabla_cot = document.getElementById('tabla_proveedores'+i);
        if(tabla_cot == null && cont == 0){
            return confirm('Confirmar Envío de Cotización');
        }
        var num_cot_st = document.getElementsByName("input_num_cotizacion"+i+"[]");
        var nom_prov_st = document.getElementsByName("input_nombre_proveedor"+i+"[]");
        var rut_prov_st = document.getElementsByName("input_rut_proveedor"+i+"[]");
        var precio_st = document.getElementsByName("input_precio"+i+"[]");
        /*var total_st = document.getElementsByName("input_total"+i+"[]");*/
        var fec_ent_st = document.getElementsByName("input_fecha_entrega"+i+"[]");
        var for_pag_st = document.getElementsByName("input_forma_pago"+i+"[]");
        for(j=0; j<num_cot_st.length; j++){
            var m = j + 1;
            if(num_cot_st[j].value == ''){
                alert("Debe ingresar un Número de Cotizacion para Proveedor "+ m +" de la Solicitud "+ i + ".");
                return false;
            }
            if(nom_prov_st[j].value == ''){
                alert("Debe ingresar un Nombre de Proveedor para Proveedor "+ m +" de la Solicitud "+ i + ".");
                return false;
            }
            if(rut_prov_st[j].value == ''){
                alert("Debe ingresar un RUT para Proveedor "+ m +" de la Solicitud "+ i + ".");
                return false;
            }
            if(validarRUT(rut_prov_st[j].value) == false){
                alert("El RUT de Proveedor "+ m +" de la Solicitud "+ i + " no es válido.");
                return false;
            }
            if(precio_st[j].value == ''){
                alert("Debe ingresar un Precio por unidad para Proveedor "+ m +" de la Solicitud "+ i + ".");
                return false;
            }
            /*if(total_st[j].value == ''){
                alert("Debe ingresar un Total para Proveedor "+ m +" de la Solicitud "+ i + ".");
                return false;
            }*/
            if(fec_ent_st[j].value == ''){
                alert("Debe ingresar una Fecha de Entrega para Proveedor "+ m +" de la Solicitud "+ i + ".");
                return false;
            }
            if(for_pag_st[j].value == ''){
                alert("Debe ingresar una Forma de Pago para Proveedor "+ m +" de la Solicitud "+ i + ".");
                return false;
            }

        }
    }
    return confirm('Confirmar Envío de Cotización');
}


//en crear Os
function campoVacio( idSelect ){

    //para obligar a legir centro de costos en ord_servicio/crear
    var selectCentroCosto = document.getElementById( idSelect );
    if( selectCentroCosto.selectedIndex  == 0 ){
      alert('Debe elegir un CENTRO DE COSTOS');
      return false;
    }

    var tabla= document.getElementById('tabla_os');
    var numero_filas = tabla.rows.length-1;    

    for(i=1 ;i<=numero_filas; i++)
    {
       if(document.getElementById('cant'+i).value =='')
       {
           alert('Ingrese Cantidad en Item ' + i);
           return false;
       }
       if(document.getElementById('cant'+i).value =='0')
       {
           alert('Ingrese Cantidad mayor a 0 en Item ' + i);
           return false;
       }
       if(document.getElementById('desc'+i).value =='')
       {
           alert('Ingrese Descripción en Item ' + i);
           return false;
       }
       if(document.getElementById('f_sol'+i).value =='')
       {
           alert('Ingrese Fecha de Cierre en Item ' + i);
           return false;
       }
//       if(document.getElementById('c_costos'+i).value =='')
//       {
//           alert('Ingrese Centro de Costos en Item ' + i);
//           return false;
//       }
    }
    alert('Orden de Servicio Enviada');
    return true;
}

//Funciones Yoon 
function para_pruebas(tipos_os)
{
    var data = "Core Selectors Attributes Traversing Manipulation CSS Events Effects Ajax Utilities".split(" ");
    $('#num_item_tabla_os').autocomplete(data);
}

/*
 * Función utilizada en Función utilizada en sac/modules/ord_servicio/templates/crearSuccess.php
 */
function contar_items()
{
    var num_row = document.getElementById("tabla_os").rows.length;
    $("#num_item_tabla_os").val(num_row-2);
}

/*
 * Función utilizada en sac/modules/aprobar_os/templates/revisarSuccess.php
 * Función utilizada en sac/modules/aprobar_os/templates/aprobarSuccess.php
 */
function contar_items2(id_tabla, id_input_num_item)
{
    var num_row = document.getElementById(id_tabla).rows.length; //'tabla_lista_solicitudes'
    $("#"+id_input_num_item).val(num_row-1); //+id_input_num_item input_num_item"
}

/*
 * Agregar nuevo item en la tabla tabla_os en sac/ord_servicio/crearSuccess
 */
function nuevo_tr_tabla(id_tabla, id_sel_tipo_solicitud, id_opt_tipo_solicitud, id_sel_tipos_unidad, id_opt_tipos_unidad)
{
    /*Se referenci la tabla*/
    var table_item = document.getElementById(id_tabla);
    num_row = table_item.rows.length;
    /*Se le agrega una nueva fila a la tabla*/
    table_item.insertRow(num_row);

    /* Se agregan las celdas*/
    for( i = 0; i < table_item.rows[0].cells.length; i++)
    {
        table_item.rows[num_row].insertCell(i);
    }

    /*Se crea un tag select con name sel_tipo_os+(numero_de_fila_correspondiente)*/
    var sel = document.createElement("select");
    sel.setAttribute("name", "sel_tipo_os"+num_row);

    /*Se crea un tag select con name "tipos_unidad"+(numero_de_fila_correspondiente) */
    var sel1 = document.createElement("select");
    sel1.setAttribute("name", "sel_tipos_unidad"+num_row);
    
    /* Para copiar, en cada fila, los tipos de Solicitudes que existen (por cada item).
     * Se copian los option desde los option de id id_option que pertenecen al select de id id_select
     */
    for( i=0; i< ($(id_sel_tipo_solicitud).children(id_opt_tipo_solicitud).length); i++ )
    {
        var opt = document.createElement("option");
        var text = document.createTextNode( $(id_sel_tipo_solicitud).children(id_opt_tipo_solicitud).get(i).innerHTML );
        opt.appendChild(text);
        sel.appendChild(opt);
    }
    
    /* Para copiar los tipos de Unidades que existen en cada fila (item).
     * Se copian los option desde los option de id id_opt_tipos_unidad que pertenecen al select de id id_sel_tipos_unidad
     */
    for(i=0; i< ( $(id_sel_tipos_unidad).children(id_opt_tipos_unidad).length); i++ )
    {
        var opt1 = document.createElement("option");
        var text1 = document.createTextNode( $(id_sel_tipos_unidad).children(id_opt_tipos_unidad).get(i).innerHTML );
        opt1.appendChild(text1);
        sel1.appendChild(opt1);
    }

    /* Para generar el contenido del autocompletar en la columna Proveedor Sugerido de cada fila (item)
     * Se copia el contenido html de los option con id opt_prov del select don id sel_prov
     */
    var arreglo = new Array();
    for(i=0 ; i< ($('#sel_prov').children('#opt_prov').length) ; i++){
        arreglo.push( $('#sel_prov').children('#opt_prov').get(i).innerHTML);
    }
        

    table_item.rows[num_row].cells[0].innerHTML = " <strong>"+num_row+"</strong>";
    table_item.rows[num_row].cells[1].innerHTML = " <input align='right' maxlength='6' size='2' id='cant"+num_row+"' name='cant"+num_row+"' type='text' onkeypress='validate(event)' onpaste='return false;'/> ";
    table_item.rows[num_row].cells[2].setAttribute("id", "td_tipo_unidad"+num_row);
    table_item.rows[num_row].cells[3].innerHTML = " <input id='desc"+num_row+"' name='desc"+num_row+"' type='text' maxlength='30' size='15'/> ";
    table_item.rows[num_row].cells[4].innerHTML = " <input id='prov_sug"+num_row+"' name='prov_sug"+num_row+"' type='text' maxlength='30' size='15'/> ";
    table_item.rows[num_row].cells[5].innerHTML = " <input id='cost_sug"+num_row+"' name='cost_sug"+num_row+"' type=text' maxlength='8' size='7'onkeypress='validate(event)' onpaste='return false;' /> ";
    table_item.rows[num_row].cells[6].innerHTML = " <input id='f_sol"+num_row+"' name='f_sol"+num_row+"' type='text' maxlength='10' size='6' class='date-pick' readonly='true'> ";
    table_item.rows[num_row].cells[7].setAttribute("id", "td_tipo_os"+num_row);

    //se agrega la función autocompletar con los valores de los proveedores
    $('#prov_sug'+num_row).autocomplete(arreglo);
    //se agrega el select sel1 al td td_tipo_unidad+num_row. Este td debe pertenecer a la tabla tabla_os
    document.getElementById("td_tipo_unidad"+num_row).appendChild(sel1);
    //se agrega el select sel al td td_tipo_os+num_row. Este td debe pertenecer a la tabla tabla_os
    document.getElementById("td_tipo_os"+num_row).appendChild(sel);
    //table_item.rows[num_row].cells[9].innerHTML = " <input id='obs' name='obs"+num_row+"' type='text'> ";
    cargar_calendario();
}

function eliminar_tr_tabla(id_tabla)
{
    var tabla = document.getElementById(id_tabla);
    var largo = tabla.rows.length - 1;
    if(largo<2)
    {
        alert('Debe existir al menos una Solicitud (Item).');
    }
    else
    {
        tabla.deleteRow(largo);
    }

}

function cargar_calendario()
{
    $('.date-pick').datePicker({clickInput:true, createButton:false});
}

////para index de ord_servicio
//function cargar() {
//	var sel = document.createElement("select");
//	var opt = document.createElement("option");
//	var text = document.createTextNode("opcion1");
//	opt.appendChild(text);
//	sel.appendChild(opt);
//	document.getElementById("target").appendChild(sel);
//}

function llenar_prov_sug(prov_sug_id)
{
    /* Para generar el contenido del autocompletar en la columna Proveedor Sugerido de cada fila (item)
     * Se opian el contenido html de los option con id opt_prov del select don id sel_prov
     */
    var arreglo = new Array();
    for(i=0 ; i< ($('#sel_prov').children('#opt_prov').length) ; i++)
    arreglo.push( $('#sel_prov').children('#opt_prov').get(i).innerHTML);
    /* Se agrega la función autocompletar con los valores de los proveedores
     */
    $(prov_sug_id).autocomplete(arreglo);
}


function limitar_textarea(texto, e, limite)
{
  if (texto.length > limite ) {
    if (navigator.appName == "Netscape") tecla = e.which;
    else tecla = e.keyCode;
    if (tecla != 8) return false;
  }
  return true;
}

/*
 * Función para cargar las funcionalidades de la tabla TableDate de JQuery en
 * cualquier tabla con id=id
 */
function tablajQuery(id)
{
    $(document).ready(function() {
				$('#'+id).dataTable( {

				} );
			} );
}


/*
 * Función utilizada en apps/sac/modules/cotizacion/templates/listaSuccess
 * Agrega/desagrega los ids de los items selecionados/deseleccionados en un
 * select con id idSelect
 */
function id_item_en_select( idSelect , idItem , idCheckbox , idInput )
{
    var sel = document.getElementById(idSelect);

    if( $('#'+idCheckbox).attr('checked') )//Si se cumple, entonces, el checkbox se ha sido seleccionado
    {
        if( !document.getElementById( 'option'+idItem ) )
        {
            var opt = document.createElement('option');
            opt.text = idItem;
            opt.value = idItem;
            opt.setAttribute('id','option'+idItem);

            try{
                sel.add(opt, null); // compatible según estándares; no funciona en IE
            }
            catch(ex){
                sel.add(opt); // Solo funciona en IE
            }
        }
    }
    else //En este caso el checkbox se ha deseleccionado
    {
        var optAux = document.getElementById('option'+idItem);
        if(optAux)
        {
            sel.removeChild(optAux);
        }
    }

    /* Para dejar los name de los option de select de la forma
     * <option name='option0'><option name='option1'><option name='option2'>...
     */
    optElems = sel.getElementsByTagName('option');
    for( i=0 ; i<optElems.length ; i++ )
    {
        optElems[i].setAttribute('selected','true');
    }
    contar_sel(idSelect, idInput);
   
}

/*
 * Función utilizada en apps/sac/modules/cotizacion/templates/listaSuccess
 * Agrega/desagrega los ids de los items selecionados/deseleccionados en un
 * select con id idSelect
 */
function id_item_en_select_en_orden_compra( idSelect , idItem , idCheckbox , idInput , idTagContador )
{
    var sel = document.getElementById(idSelect);

    if( $('#'+idCheckbox).attr('checked') )//Si se cumple, entonces, el checkbox se ha sido seleccionado
    {
        if( !document.getElementById( 'option'+idItem ) )
        {
            var opt = document.createElement('option');
            opt.text = idItem;
            opt.value = idItem;
            opt.setAttribute('id','option'+idItem);

            try{
                sel.add(opt, null); // compatible según estándares; no funciona en IE
            }
            catch(ex){
                sel.add(opt); // Solo funciona en IE
            }
        }
    }
    else //En este caso el checkbox se ha deseleccionado
    {
        var optAux = document.getElementById('option'+idItem);
        if(optAux)
        {
            sel.removeChild(optAux);
        }
    }

    /* Para dejar los name de los option de select de la forma
     * <option name='option0'><option name='option1'><option name='option2'>...
     */
    optElems = sel.getElementsByTagName('option');
    for( i=0 ; i<optElems.length ; i++ )
    {
        optElems[i].setAttribute('selected','true');
    }
    contar_sel_solicitudes_ord_compra(idSelect, idInput, idTagContador);
}

/*
 * Función utilizada en apps/sac/modules/ord_compra_int/templates/listaSuccess
 * Agrega/desagrega los ids de los items selecionados/deseleccionados en un
 * select con id idSelect
 */
function id_item_en_select_ord_compra_int( idSelect , idItem , idCheckbox , idInput )
{
    var sel = document.getElementById(idSelect);

    if( $('#'+idCheckbox).attr('checked') )//Si se cumple, entonces, el checkbox se ha sido seleccionado
    {
        if( !document.getElementById( 'option'+idItem ) )
        {
            var opt = document.createElement('option');
            opt.text = idItem;
            opt.value = idItem;
            opt.setAttribute('id','option'+idItem);

            try{
                sel.add(opt, null); // compatible según estándares; no funciona en IE
            }
            catch(ex){
                sel.add(opt); // Solo funciona en IE
            }
        }
    }
    else //En este caso el checkbox se ha deseleccionado
    {
        var optAux = document.getElementById('option'+idItem);
        if(optAux)
        {
            sel.removeChild(optAux);
        }
    }

    /* Para dejar los name de los option de select de la forma
     * <option name='option0'><option name='option1'><option name='option2'>...
     */
    optElems = sel.getElementsByTagName('option');
    for( i=0 ; i<optElems.length ; i++ )
    {
        optElems[i].setAttribute('selected','true');
    }
    contar_sel_solicitudes_ord_compra_int(idSelect, idInput);
   
}


/*
 * Función utilizada en apps/sac/modules/cotizacion/templates/listaSuccess
 * Devuelve el número de option con nombre name que contiene el select con
 * id idSelect
 */
function contar_sel(idSelect, idInput)
{
    var sel = document.getElementById(idSelect);
    var opt = sel.getElementsByTagName('option');
    document.getElementById('pTag_largo').innerHTML = opt.length+' Solicitudes para Cotizar';
    $('#'+idInput).val(opt.length);
}

/*
 * Utilizada en apps/sac/modules/cotizacion/templates/listaSuccess
 * Lo mismo que contar_sel()
 */
function contar_sel_solicitudes_ord_compra(idSelect, idInput, idTagContador)
{
    var sel = document.getElementById(idSelect);
    var opt = sel.getElementsByTagName('option');
    document.getElementById(idTagContador).innerHTML = opt.length+' Solicitudes Elegidas para Comprar';
    $('#'+idInput).val(opt.length);
}

/*
 * Utilizada en apps/sac/modules/ord_compra_interna/templates/solicitudesSuccess
 * Hace lo mismo que contar_sel()
 */
function contar_sel_solicitudes_ord_compra_int(idSelect, idInput, idTagContador)
{
    var sel = document.getElementById(idSelect);
    var opt = sel.getElementsByTagName('option');
    document.getElementById('pTag_largo').innerHTML = opt.length+' Sols. Para Compra Interna';
    $('#'+idInput).val(opt.length);
}

/*
 * Función utilizada en apps/sac/modules/cotizacion/templates/listaSuccess
 */
//function existe_en_select(idSelect, valor)
//{
//    var sel = document.getElementById(idSelect);
//    var opt = sel.getElementsByTagName('option');
//    largo = opt.length;
//    i=0;
//    for (i=1 ; i<=(largo + 1); i++)
//    {
//        alert( $('#'+idSelect).children('#option').get(i).innerHTML );
//    }
//
//    return i;
//}



//FUNCIONES DE LAS TABLAS. DATA TABLES

function tablajQueryFiltrosSort(id)
{
    $(document).ready(function() {
	/* Initialise the DataTable */
	var oTable = $('#'+id).dataTable( {
                "aoColumns": [
			null,
			null,
			null,
			null,
                        {"bSortable": false}
		],
		"oLanguage": {
			"sSearch": "Filtrar:"
		}
	} );

	/* Add a select menu for each TH element in the table footer */
	$("tfoot th").each( function ( i ) {
                if(i==4){

                }else{
                    this.innerHTML = fnCreateSelect( oTable.fnGetColumnData(i) );
                    $('select', this).change( function () {
                        oTable.fnFilter( $(this).val(), i );
                    } );
                }
	} );
} );
}

(function($) {
/*
 * Function: fnGetColumnData
 * Purpose:  Return an array of table values from a particular column.
 * Returns:  array string: 1d data array
 * Inputs:   object:oSettings - dataTable settings object. This is always the last argument past to the function
 *           int:iColumn - the id of the column to extract the data from
 *           bool:bUnique - optional - if set to false duplicated values are not filtered out
 *           bool:bFiltered - optional - if set to false all the table data is used (not only the filtered)
 *           bool:bIgnoreEmpty - optional - if set to false empty values are not filtered from the result array
 * Author:   Benedikt Forchhammer <b.forchhammer /AT\ mind2.de>
 */
$.fn.dataTableExt.oApi.fnGetColumnData = function ( oSettings, iColumn, bUnique, bFiltered, bIgnoreEmpty ) {
	// check that we have a column id
	if ( typeof iColumn == "undefined" ) return new Array();

	// by default we only wany unique data
	if ( typeof bUnique == "undefined" ) bUnique = true;

	// by default we do want to only look at filtered data
	if ( typeof bFiltered == "undefined" ) bFiltered = true;

	// by default we do not wany to include empty values
	if ( typeof bIgnoreEmpty == "undefined" ) bIgnoreEmpty = true;

	// list of rows which we're going to loop through
	var aiRows;

	// use only filtered rows
	if (bFiltered == true) aiRows = oSettings.aiDisplay;
	// use all rows
	else aiRows = oSettings.aiDisplayMaster; // all row numbers

	// set up data array
	var asResultData = new Array();

	for (var i=0,c=aiRows.length; i<c; i++) {
		iRow = aiRows[i];
		var aData = this.fnGetData(iRow);
		var sValue = aData[iColumn];

		// ignore empty values?
		if (bIgnoreEmpty == true && sValue.length == 0) continue;

		// ignore unique values?
		else if (bUnique == true && jQuery.inArray(sValue, asResultData) > -1) continue;

		// else push the value onto the result data array
		else asResultData.push(sValue);
	}

	return asResultData;
}}(jQuery));


function fnCreateSelect( aData )
{
	var r='<select><option value=""></option>', i, iLen=aData.length;
	for ( i=0 ; i<iLen ; i++ )
	{
		r += '<option value="'+aData[i]+'">'+aData[i]+'</option>';
	}
	return r+'</select>';
}

function dataTablesFilterText( id ){
    var asInitVals = new Array();

    $(document).ready(function() {
	var oTable = $('#'+id).dataTable( {
               "aoColumns": [
			null,
			null,
			null,
			null,
                        {"bSortable": false}

		],
		"oLanguage": {
			"sSearch": "Filtrar:"
		}
	} );

	$("tfoot input").keyup( function () {
		/* Filter on the column (the index) of this element */
		oTable.fnFilter( this.value, $("tfoot input").index(this) );
	} );

	/*
	 * Support functions to provide a little bit of 'user friendlyness' to the textboxes in
	 * the footer
	 */
	$("tfoot input").each( function (i) {
		asInitVals[i] = this.value;
	} );

	$("tfoot input").focus( function () {
		if ( this.className == "search_init" )
		{
			this.className = "";
			this.value = "";
		}
	} );

	$("tfoot input").blur( function (i) {
		if ( this.value == "" )
		{
			this.className = "search_init";
			this.value = asInitVals[$("tfoot input").index(this)];
		}
	} );
} );
}


function tablaDinamicaCrearOS(id){
    var oTable;
    //var giRedraw = false;
    var giCount=2;

$(document).ready(function() {

	/* Add a click handler to the rows - this could be used as a callback */
	$("#"+id+ " tbody").click(function(event) {
                if($(event.target.parentNode).hasClass('row_selected')){
                    $(event.target.parentNode).removeClass('row_selected');
                }else{
                    $(oTable.fnSettings().aoData).each(function (){
			$(this.nTr).removeClass('row_selected');
                    });
                    $(event.target.parentNode).addClass('row_selected');
                }

	});
        
	/***********************************Evento click Botón eliminar************************************/
	$('#delete').click( function() {
                if(!confirm('Confirmar Eliminacion de Item')){
                    return;
                }
                var anSelected = fnGetSelected( oTable );
                var table_item = document.getElementById( id );
                num_row = table_item.rows.length;
                if((num_row == 3) && (anSelected != '')){
                    alert('No puede eliminar el item, debe existir a lo menos uno.');
                }else{
                    if(anSelected==''){
                       alert('Debe seleccionar el item que desea eliminar.');
                    }else{
                        /* Borra la fila seleccionada
                         */
                        oTable.fnDeleteRow( anSelected[0] );
                        giCount--;

                        /*****************************
                         * Función Importante, llena un input oculto en la página para por medio de un post saber
                         * la cantidad de items ingresados.
                         */
                        contar_items();
                        /************************/
                        /* Para regenerar todos los ids automáticamente
                         */
                        for( i=1 ; i < giCount ; i++)
                        {
                            var rowElem = table_item.rows[i];
                            /* Se regenera el número de item mostrado por fila
                             */
                            rowElem.cells[0].innerHTML = '<strong>'+i+'<strong>';
                            /* Se regenera el id del td de la columna Unidad de la fila i
                             */
                            id_td_unidades = rowElem.cells[2].getAttribute('id');
                            id_td_unidades = id_td_unidades.substr(0, id_td_unidades.length-1);
                            rowElem.cells[2].setAttribute( 'id', id_td_unidades+i );

                            /* Se regenera el id del td de la columna Unidad de la fila i
                             */
                            id_td_tipo_solicitud = rowElem.cells[7].getAttribute('id');
                            id_td_tipo_solicitud = id_td_tipo_solicitud.substr(0, id_td_tipo_solicitud.length-1);
                            rowElem.cells[7].setAttribute( 'id', id_td_tipo_solicitud+i );


                            /* Se regeneran todos los id/name de los inputs de cada fila
                             */
                            inputElems = rowElem.getElementsByTagName('input');
                            for( j=0 ; j < inputElems.length ; j++ )
                            {
                                id_input = inputElems[j].getAttribute('id').substring(0, inputElems[j].getAttribute('id').length-1);
                                inputElems[j].setAttribute('id', id_input+i);
                                inputElems[j].setAttribute('name', id_input+i);
                            }

                            /* Se regeneran todos los id/name de los select y option correspondientes de cada fila
                             */
                            selectElems = rowElem.getElementsByTagName('select');
                            for(j=0 ; j < selectElems.length ; j++ ){
                                
                                id_select = selectElems[j].getAttribute('id').substring(0, selectElems[j].getAttribute('id').length-1);
                                selectElems[j].setAttribute('id', id_select+i);
                                selectElems[j].setAttribute('name', id_select+i);                                
                                
                                if(i==1){
                                    
                                    num_option = selectElems[j].getElementsByTagName('option').length;
                                    optionElems = selectElems[j].getElementsByTagName('option');                                    

                                    for( k=0 ;k < num_option ;k++ ){

                                        if(j==0){
                                            optionElems[k].setAttribute('id', 'opt_tipo_unidad1');
                                        }
                                        else if(j==1){
                                            optionElems[k].setAttribute('id', 'opt_tipo_os1');
                                        }

                                    }

                                }

                            }

                        }

                    }
                }

                
	} );
        /*******************************Fin Evento click Botón eliminar************************************/


	/* Init the table */
	oTable = $('#' + id).dataTable({
                "bSort": false,
                "bPaginate": false,
                "bFilter": false,
                "bInfo": false
        } );


        /**********************************Evento click Botón Agregar***************************************/
        $('#add').click( function() {
                $('#'+id).dataTable().fnAddData( [
                        " <strong>"+giCount+"</strong>",
                        " <input align='right' maxlength='6' size='2' id='cant"+giCount+"' name='cant"+giCount+"' type='text' onkeypress='validate(event)' onpaste='return false;'/> ",
                        null,
                        " <input id='desc"+giCount+"' name='desc"+giCount+"' type='text' maxlength='30' size='15'/> " ,
                        " <input id='prov_sug"+giCount+"' name='prov_sug"+giCount+"' type='text' maxlength='30' size='15'/> ",
                        " <input id='cost_sug"+giCount+"' name='cost_sug"+giCount+"' type=text' maxlength='8' size='7'onkeypress='validate(event)' onpaste='return false;' /> ",
                        " <input id='f_sol"+giCount+"' name='f_sol"+giCount+"' type='text' maxlength='10' size='6' class='date-pick' readonly='true'> ",
                        null
                    ] );

                    /*****************************Igresar Select (Combobox) con tipo de solicitudes:*****************************/
                        /*
                         * Se referencia la tabla de con indentificador id.
                         * Esta tabla es en la que se agregarán y eliminarán items.
                         */
                        var table_item = document.getElementById(id);
                        num_row = table_item.rows.length - 2;
                        
                        /*
                         * Se agrega un identificador al <td> 7 (a la columna 7: Tipo Solicitud)
                         * del nuevo <tr> que se esta agregando
                         */
                        table_item.rows[giCount].cells[7].setAttribute("id", "td_tipo_os"+giCount);

                        /*Se crea un tag select con name 'sel_tipo_os+numero_de_fila_correspondiente' */
                        var sel = document.createElement("select");
                        sel.setAttribute("name", "sel_tipo_os"+giCount);
                        sel.setAttribute("id", "sel_tipo_os"+giCount);

                        /*
                         * Para copiar, en cada fila, los tipos de Solicitudes que existen (por cada item).
                         * Se copian los option desde los option de id id_option que pertenecen al select
                         * de id id_select.
                         */
                        for( i=0; i< ($('#sel_tipo_os1').children('#opt_tipo_os1').length); i++ )
                        {
                            var opt = document.createElement("option");
                            var text = document.createTextNode( $('#sel_tipo_os1').children('#opt_tipo_os1').get(i).innerHTML );
                            opt.appendChild(text);
                            sel.appendChild(opt);
                        }

                        /*
                         * Se agrega el select (combobox) con los tipos de solicitudes.
                         * se agrega el select sel al td td_tipo_os+num_row.
                         * Este td debe pertenecer a la tabla tabla_os
                         */
                        document.getElementById("td_tipo_os"+giCount).appendChild(sel);

                    /*************************Fin Igresar Select (Combobox) con tipo de solicitudes:*****************************/

                    /*****************************Igresar Select (Combobox) con tipo de unidades:*****************************/

                        /*
                         * Se agrega un identificador al <td> 2 (a la columna 2: Unidad)
                         * del nuevo <tr> que se esta agregando
                         */
                        table_item.rows[giCount].cells[2].setAttribute("id", "td_tipo_unidad"+giCount);

                        /*Se crea un tag select con name 'sel_tipos_unidad+numero_de_fila_correspondiente' */
                        var sel2 = document.createElement("select");
                        sel2.setAttribute("name", "sel_tipos_unidad"+giCount);
                        sel2.setAttribute("id", "sel_tipos_unidad"+giCount);
                        /*
                         * Para copiar los tipos de Unidades que existen en cada fila (item).
                         * Se copian los option desde los option de id id_opt_tipos_unidad que pertenecen al select de id id_sel_tipos_unidad
                         */
                        for(i=0; i< ( $('#sel_tipos_unidad1').children('#opt_tipo_unidad1').length); i++ )
                        {
                            var opt1 = document.createElement("option");
                            var text1 = document.createTextNode( $('#sel_tipos_unidad1').children('#opt_tipo_unidad1').get(i).innerHTML );
                            opt1.appendChild(text1);
                            sel2.appendChild(opt1);
                        }

                        /*
                         * Se agrega el select (combobox) con los tipos de solicitudes.
                         * se agrega el select sel al td td_tipo_os+num_row.
                         * Este td debe pertenecer a la tabla tabla_os
                         */
                        document.getElementById("td_tipo_unidad"+giCount).appendChild(sel2);

                    /*************************Fin Igresar Select (Combobox) con tipo de unidades:*****************************/

                    /*************************Autocompletar en Proveedores:*************************/
                        /*
                         * Para generar el contenido del autocompletar en la columna Proveedor Sugerido de cada fila (item)
                         * Se copia el contenido html de los option con id opt_prov del select don id sel_prov
                         */
                        var arreglo = new Array();
                        for(i=0 ; i< ($('#sel_prov').children('#opt_prov').length) ; i++){
                            arreglo.push( $('#sel_prov').children('#opt_prov').get(i).innerHTML);
                        }
                        $('#prov_sug'+giCount).autocomplete(arreglo);
                    /*********************Fin Autocompletar en Proveedores:*************************/

                    /******************************Cargar Clanedario JQuery:************************/
                    cargar_calendario();
                    /**************************Fin Cargar Clanedario JQuery:************************/

	giCount++;
        /*
         * Función Importante, llena un input oculto en la ágina para por medio de un post saber
         * la cantidad de items ingresados.
         */
        contar_items();
        });
        /******************************Fin Evento click Botón Agregar***************************************/

} );
}

/* Get the rows which are currently selected */
function fnGetSelected( oTableLocal )
{
	var aReturn = new Array();
	var aTrs = oTableLocal.fnGetNodes();

	for ( var i=0 ; i<aTrs.length ; i++ )
	{
		if ( $(aTrs[i]).hasClass('row_selected') )
		{
			aReturn.push( aTrs[i] );
		}
	}
	return aReturn;
}

function tablaDinamicaProveedores(id){
    var oTable;
    //var giRedraw = false;
    var giCount=2;

$(document).ready(function() {

	/* Add a click handler to the rows - this could be used as a callback */
	$("#"+id+ " tbody").click(function(event) {
                if($(event.target.parentNode).hasClass('row_selected')){
                    $(event.target.parentNode).removeClass('row_selected');
                }else{
                    $(oTable.fnSettings().aoData).each(function (){
			$(this.nTr).removeClass('row_selected');
                    });
                    $(event.target.parentNode).addClass('row_selected');
                }
	});
        javascript:
	/***********************************Evento click Botón eliminar************************************/
	$('#delete'+id).click( function() {
                
                var anSelected = fnGetSelected( oTable );
                
                if((giCount == 2) && (anSelected != '')){
                    alert('Debe haber al menos un proveedor cotizado.');
                }else{
                    if(anSelected==''){
                       alert('Debe seleccionar el item que desea eliminar.');
                    }else{
                        if(!confirm('Confirmar Eliminacion de Item')){
                            return;
                        }
                        var num_solicitud = id.toString().substr(17, 18);
                        /* Borra la fila seleccionada
                         */
                        oTable.fnDeleteRow( anSelected[0] );
                        giCount--;
                        $('#numProveedores'+num_solicitud).val(giCount-1);

                    }
                }
	} );
        /*******************************Fin Evento click Botón eliminar************************************/

	/* Init the table */
	oTable = $('#' + id).dataTable({
                "bSort": false,
                "bPaginate": false,
                "bFilter": false,
                "bInfo": false
        } );

        /**********************************Evento click Botón Agregar***************************************/            
            $('#add'+id).click( function() {
                    
                    var num_solicitud = id.toString().substr(17, 18);
                    /* el orden lógico y sentido de el name de un tag es
                     * 'input+_+nombretag+numerosolcitud+numerocolumna+[]'
                     * [] es el arreglo de filas en la tabla.
                     */
                    $('#'+id).dataTable().fnAddData( [
                            " <input class='letra_mediana' name='input_num_cotizacion"+num_solicitud+"[]' style='width: 65px'/>",
                            " <input class='letra_mediana'  name='input_nombre_proveedor"+num_solicitud+"[]' style='width: 200px'/>",
                            " <input class='letra_mediana'  name='input_rut_proveedor"+num_solicitud+"[]' style='width: 70px'/>",
                            " <input class='letra_mediana'  name ='input_precio"+num_solicitud+"[]' style='width: 65px'/> ",
                            " <select class='letra_mediana' style='width: 45px'> <option>CLP</option> <option>USD</option> </select> ",
                            " <input class='letra_mediana'  name='input_fecha_entrega"+num_solicitud+"[]' style='width: 65px'/> ",
                            " <input class='letra_mediana'  name='input_forma_pago"+num_solicitud+"[]' style='width: 110px'/> ",
                            " <input class='letra_mediana'  name='input_observaciones"+num_solicitud+"[]' id='"+num_solicitud+"' value='' style='display: none'>\n\
                              <a onclick=\" $('#"+num_solicitud+"').val( prompt('Observaciones','') ); \">Observaciones</a> "

                        ] );
            $('#numProveedores'+num_solicitud).val(giCount);
            giCount++;
            });
        /******************************Fin Evento click Botón Agregar***************************************/

} );
}

/************** Para la acción declarar una Orden de Servicio Revisada *************/
/************** o Rechazada en sac/modules/revisar_os/revisar **********************/
function en_revisar_os_revisar()
{
    $('#radio_button_revisada').click( function()
            {
                $('#revisar_eleccion_accion').val( $('#radio_button_revisada').val() );
            }
        );

    $('#radio_button_rechazada').click( function(){
                $('#revisar_eleccion_accion').val( $('#radio_button_rechazada').val() );
            }
        );

    $('#button_confirmar_rivision').click( function(){
                var accion = $('#revisar_eleccion_accion').val();
                
                if( accion == 'revisada' )
                {
                    return confirm ('ACEPTAR Orden de Servicio como REVISADA');
                }
                else if( accion == 'rechazada' )
                {
                    return confirm ('RECHAZAR Orden de Servicio');
                }
                else
                {
                    alert('Debe elegir una acción');
                    return false
                }
            }
        )
}
